/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

云主机
云主机实例、镜像、实例规格、实例模板、配额相关的接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef VmClient_h
#define VmClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKVm/VmApiModel.h>

@interface VmClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    describeImageMembers sync request
    @param describeImageMembersRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageMembersResponse` the request response data model
    */
    -(NSDictionary*) describeImageMembersSyncWithRequest:(VmDescribeImageMembersRequest*) describeImageMembersRequest;

    -(void)describeImageMembersAsyncWithRequest:(VmDescribeImageMembersRequest*) describeImageMembersRequest
    completionHandler:(void(^)(int statusCode,VmDescribeImageMembersResponse* _Nullable describeImageMembersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createInstances sync request
    @param createInstancesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createInstancesResponse` the request response data model
    */
    -(NSDictionary*) createInstancesSyncWithRequest:(VmCreateInstancesRequest*) createInstancesRequest;

    -(void)createInstancesAsyncWithRequest:(VmCreateInstancesRequest*) createInstancesRequest
    completionHandler:(void(^)(int statusCode,VmCreateInstancesResponse* _Nullable createInstancesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    shareImage sync request
    @param shareImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `shareImageResponse` the request response data model
    */
    -(NSDictionary*) shareImageSyncWithRequest:(VmShareImageRequest*) shareImageRequest;

    -(void)shareImageAsyncWithRequest:(VmShareImageRequest*) shareImageRequest
    completionHandler:(void(^)(int statusCode,VmShareImageResponse* _Nullable shareImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    startInstance sync request
    @param startInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `startInstanceResponse` the request response data model
    */
    -(NSDictionary*) startInstanceSyncWithRequest:(VmStartInstanceRequest*) startInstanceRequest;

    -(void)startInstanceAsyncWithRequest:(VmStartInstanceRequest*) startInstanceRequest
    completionHandler:(void(^)(int statusCode,VmStartInstanceResponse* _Nullable startInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    unReleaseImage sync request
    @param unReleaseImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `unReleaseImageResponse` the request response data model
    */
    -(NSDictionary*) unReleaseImageSyncWithRequest:(VmUnReleaseImageRequest*) unReleaseImageRequest;

    -(void)unReleaseImageAsyncWithRequest:(VmUnReleaseImageRequest*) unReleaseImageRequest
    completionHandler:(void(^)(int statusCode,VmUnReleaseImageResponse* _Nullable unReleaseImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    unShareImage sync request
    @param unShareImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `unShareImageResponse` the request response data model
    */
    -(NSDictionary*) unShareImageSyncWithRequest:(VmUnShareImageRequest*) unShareImageRequest;

    -(void)unShareImageAsyncWithRequest:(VmUnShareImageRequest*) unShareImageRequest
    completionHandler:(void(^)(int statusCode,VmUnShareImageResponse* _Nullable unShareImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeImageConstraintsBatch sync request
    @param describeImageConstraintsBatchRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageConstraintsBatchResponse` the request response data model
    */
    -(NSDictionary*) describeImageConstraintsBatchSyncWithRequest:(VmDescribeImageConstraintsBatchRequest*) describeImageConstraintsBatchRequest;

    -(void)describeImageConstraintsBatchAsyncWithRequest:(VmDescribeImageConstraintsBatchRequest*) describeImageConstraintsBatchRequest
    completionHandler:(void(^)(int statusCode,VmDescribeImageConstraintsBatchResponse* _Nullable describeImageConstraintsBatchResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateInstanceTemplate sync request
    @param updateInstanceTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateInstanceTemplateResponse` the request response data model
    */
    -(NSDictionary*) updateInstanceTemplateSyncWithRequest:(VmUpdateInstanceTemplateRequest*) updateInstanceTemplateRequest;

    -(void)updateInstanceTemplateAsyncWithRequest:(VmUpdateInstanceTemplateRequest*) updateInstanceTemplateRequest
    completionHandler:(void(^)(int statusCode,VmUpdateInstanceTemplateResponse* _Nullable updateInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    attachDisk sync request
    @param attachDiskRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachDiskResponse` the request response data model
    */
    -(NSDictionary*) attachDiskSyncWithRequest:(VmAttachDiskRequest*) attachDiskRequest;

    -(void)attachDiskAsyncWithRequest:(VmAttachDiskRequest*) attachDiskRequest
    completionHandler:(void(^)(int statusCode,VmAttachDiskResponse* _Nullable attachDiskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstancePassword sync request
    @param modifyInstancePasswordRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstancePasswordResponse` the request response data model
    */
    -(NSDictionary*) modifyInstancePasswordSyncWithRequest:(VmModifyInstancePasswordRequest*) modifyInstancePasswordRequest;

    -(void)modifyInstancePasswordAsyncWithRequest:(VmModifyInstancePasswordRequest*) modifyInstancePasswordRequest
    completionHandler:(void(^)(int statusCode,VmModifyInstancePasswordResponse* _Nullable modifyInstancePasswordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    attachNetworkInterface sync request
    @param attachNetworkInterfaceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachNetworkInterfaceResponse` the request response data model
    */
    -(NSDictionary*) attachNetworkInterfaceSyncWithRequest:(VmAttachNetworkInterfaceRequest*) attachNetworkInterfaceRequest;

    -(void)attachNetworkInterfaceAsyncWithRequest:(VmAttachNetworkInterfaceRequest*) attachNetworkInterfaceRequest
    completionHandler:(void(^)(int statusCode,VmAttachNetworkInterfaceResponse* _Nullable attachNetworkInterfaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteKeypair sync request
    @param deleteKeypairRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteKeypairResponse` the request response data model
    */
    -(NSDictionary*) deleteKeypairSyncWithRequest:(VmDeleteKeypairRequest*) deleteKeypairRequest;

    -(void)deleteKeypairAsyncWithRequest:(VmDeleteKeypairRequest*) deleteKeypairRequest
    completionHandler:(void(^)(int statusCode,VmDeleteKeypairResponse* _Nullable deleteKeypairResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeImage sync request
    @param describeImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageResponse` the request response data model
    */
    -(NSDictionary*) describeImageSyncWithRequest:(VmDescribeImageRequest*) describeImageRequest;

    -(void)describeImageAsyncWithRequest:(VmDescribeImageRequest*) describeImageRequest
    completionHandler:(void(^)(int statusCode,VmDescribeImageResponse* _Nullable describeImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    importKeypair sync request
    @param importKeypairRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `importKeypairResponse` the request response data model
    */
    -(NSDictionary*) importKeypairSyncWithRequest:(VmImportKeypairRequest*) importKeypairRequest;

    -(void)importKeypairAsyncWithRequest:(VmImportKeypairRequest*) importKeypairRequest
    completionHandler:(void(^)(int statusCode,VmImportKeypairResponse* _Nullable importKeypairResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstance sync request
    @param describeInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceSyncWithRequest:(VmDescribeInstanceRequest*) describeInstanceRequest;

    -(void)describeInstanceAsyncWithRequest:(VmDescribeInstanceRequest*) describeInstanceRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstanceResponse* _Nullable describeInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    copyImages sync request
    @param copyImagesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `copyImagesResponse` the request response data model
    */
    -(NSDictionary*) copyImagesSyncWithRequest:(VmCopyImagesRequest*) copyImagesRequest;

    -(void)copyImagesAsyncWithRequest:(VmCopyImagesRequest*) copyImagesRequest
    completionHandler:(void(^)(int statusCode,VmCopyImagesResponse* _Nullable copyImagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeQuotas sync request
    @param describeQuotasRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeQuotasResponse` the request response data model
    */
    -(NSDictionary*) describeQuotasSyncWithRequest:(VmDescribeQuotasRequest*) describeQuotasRequest;

    -(void)describeQuotasAsyncWithRequest:(VmDescribeQuotasRequest*) describeQuotasRequest
    completionHandler:(void(^)(int statusCode,VmDescribeQuotasResponse* _Nullable describeQuotasResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstanceNetworkAttribute sync request
    @param modifyInstanceNetworkAttributeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceNetworkAttributeResponse` the request response data model
    */
    -(NSDictionary*) modifyInstanceNetworkAttributeSyncWithRequest:(VmModifyInstanceNetworkAttributeRequest*) modifyInstanceNetworkAttributeRequest;

    -(void)modifyInstanceNetworkAttributeAsyncWithRequest:(VmModifyInstanceNetworkAttributeRequest*) modifyInstanceNetworkAttributeRequest
    completionHandler:(void(^)(int statusCode,VmModifyInstanceNetworkAttributeResponse* _Nullable modifyInstanceNetworkAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyImageAttribute sync request
    @param modifyImageAttributeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyImageAttributeResponse` the request response data model
    */
    -(NSDictionary*) modifyImageAttributeSyncWithRequest:(VmModifyImageAttributeRequest*) modifyImageAttributeRequest;

    -(void)modifyImageAttributeAsyncWithRequest:(VmModifyImageAttributeRequest*) modifyImageAttributeRequest
    completionHandler:(void(^)(int statusCode,VmModifyImageAttributeResponse* _Nullable modifyImageAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    rebootInstance sync request
    @param rebootInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `rebootInstanceResponse` the request response data model
    */
    -(NSDictionary*) rebootInstanceSyncWithRequest:(VmRebootInstanceRequest*) rebootInstanceRequest;

    -(void)rebootInstanceAsyncWithRequest:(VmRebootInstanceRequest*) rebootInstanceRequest
    completionHandler:(void(^)(int statusCode,VmRebootInstanceResponse* _Nullable rebootInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeKeypairs sync request
    @param describeKeypairsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeKeypairsResponse` the request response data model
    */
    -(NSDictionary*) describeKeypairsSyncWithRequest:(VmDescribeKeypairsRequest*) describeKeypairsRequest;

    -(void)describeKeypairsAsyncWithRequest:(VmDescribeKeypairsRequest*) describeKeypairsRequest
    completionHandler:(void(^)(int statusCode,VmDescribeKeypairsResponse* _Nullable describeKeypairsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    detachDisk sync request
    @param detachDiskRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachDiskResponse` the request response data model
    */
    -(NSDictionary*) detachDiskSyncWithRequest:(VmDetachDiskRequest*) detachDiskRequest;

    -(void)detachDiskAsyncWithRequest:(VmDetachDiskRequest*) detachDiskRequest
    completionHandler:(void(^)(int statusCode,VmDetachDiskResponse* _Nullable detachDiskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    importImage sync request
    @param importImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `importImageResponse` the request response data model
    */
    -(NSDictionary*) importImageSyncWithRequest:(VmImportImageRequest*) importImageRequest;

    -(void)importImageAsyncWithRequest:(VmImportImageRequest*) importImageRequest
    completionHandler:(void(^)(int statusCode,VmImportImageResponse* _Nullable importImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createInstanceTemplate sync request
    @param createInstanceTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createInstanceTemplateResponse` the request response data model
    */
    -(NSDictionary*) createInstanceTemplateSyncWithRequest:(VmCreateInstanceTemplateRequest*) createInstanceTemplateRequest;

    -(void)createInstanceTemplateAsyncWithRequest:(VmCreateInstanceTemplateRequest*) createInstanceTemplateRequest
    completionHandler:(void(^)(int statusCode,VmCreateInstanceTemplateResponse* _Nullable createInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createImage sync request
    @param createImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createImageResponse` the request response data model
    */
    -(NSDictionary*) createImageSyncWithRequest:(VmCreateImageRequest*) createImageRequest;

    -(void)createImageAsyncWithRequest:(VmCreateImageRequest*) createImageRequest
    completionHandler:(void(^)(int statusCode,VmCreateImageResponse* _Nullable createImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    associateElasticIp sync request
    @param associateElasticIpRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `associateElasticIpResponse` the request response data model
    */
    -(NSDictionary*) associateElasticIpSyncWithRequest:(VmAssociateElasticIpRequest*) associateElasticIpRequest;

    -(void)associateElasticIpAsyncWithRequest:(VmAssociateElasticIpRequest*) associateElasticIpRequest
    completionHandler:(void(^)(int statusCode,VmAssociateElasticIpResponse* _Nullable associateElasticIpResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    disassociateElasticIp sync request
    @param disassociateElasticIpRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disassociateElasticIpResponse` the request response data model
    */
    -(NSDictionary*) disassociateElasticIpSyncWithRequest:(VmDisassociateElasticIpRequest*) disassociateElasticIpRequest;

    -(void)disassociateElasticIpAsyncWithRequest:(VmDisassociateElasticIpRequest*) disassociateElasticIpRequest
    completionHandler:(void(^)(int statusCode,VmDisassociateElasticIpResponse* _Nullable disassociateElasticIpResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    stopInstance sync request
    @param stopInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `stopInstanceResponse` the request response data model
    */
    -(NSDictionary*) stopInstanceSyncWithRequest:(VmStopInstanceRequest*) stopInstanceRequest;

    -(void)stopInstanceAsyncWithRequest:(VmStopInstanceRequest*) stopInstanceRequest
    completionHandler:(void(^)(int statusCode,VmStopInstanceResponse* _Nullable stopInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceTemplate sync request
    @param describeInstanceTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceTemplateResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceTemplateSyncWithRequest:(VmDescribeInstanceTemplateRequest*) describeInstanceTemplateRequest;

    -(void)describeInstanceTemplateAsyncWithRequest:(VmDescribeInstanceTemplateRequest*) describeInstanceTemplateRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstanceTemplateResponse* _Nullable describeInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeImages sync request
    @param describeImagesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImagesResponse` the request response data model
    */
    -(NSDictionary*) describeImagesSyncWithRequest:(VmDescribeImagesRequest*) describeImagesRequest;

    -(void)describeImagesAsyncWithRequest:(VmDescribeImagesRequest*) describeImagesRequest
    completionHandler:(void(^)(int statusCode,VmDescribeImagesResponse* _Nullable describeImagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceVncUrl sync request
    @param describeInstanceVncUrlRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceVncUrlResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceVncUrlSyncWithRequest:(VmDescribeInstanceVncUrlRequest*) describeInstanceVncUrlRequest;

    -(void)describeInstanceVncUrlAsyncWithRequest:(VmDescribeInstanceVncUrlRequest*) describeInstanceVncUrlRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstanceVncUrlResponse* _Nullable describeInstanceVncUrlResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeImageConstraints sync request
    @param describeImageConstraintsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageConstraintsResponse` the request response data model
    */
    -(NSDictionary*) describeImageConstraintsSyncWithRequest:(VmDescribeImageConstraintsRequest*) describeImageConstraintsRequest;

    -(void)describeImageConstraintsAsyncWithRequest:(VmDescribeImageConstraintsRequest*) describeImageConstraintsRequest
    completionHandler:(void(^)(int statusCode,VmDescribeImageConstraintsResponse* _Nullable describeImageConstraintsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    rebuildInstance sync request
    @param rebuildInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `rebuildInstanceResponse` the request response data model
    */
    -(NSDictionary*) rebuildInstanceSyncWithRequest:(VmRebuildInstanceRequest*) rebuildInstanceRequest;

    -(void)rebuildInstanceAsyncWithRequest:(VmRebuildInstanceRequest*) rebuildInstanceRequest
    completionHandler:(void(^)(int statusCode,VmRebuildInstanceResponse* _Nullable rebuildInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstanceAttribute sync request
    @param modifyInstanceAttributeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceAttributeResponse` the request response data model
    */
    -(NSDictionary*) modifyInstanceAttributeSyncWithRequest:(VmModifyInstanceAttributeRequest*) modifyInstanceAttributeRequest;

    -(void)modifyInstanceAttributeAsyncWithRequest:(VmModifyInstanceAttributeRequest*) modifyInstanceAttributeRequest
    completionHandler:(void(^)(int statusCode,VmModifyInstanceAttributeResponse* _Nullable modifyInstanceAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    resizeInstance sync request
    @param resizeInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resizeInstanceResponse` the request response data model
    */
    -(NSDictionary*) resizeInstanceSyncWithRequest:(VmResizeInstanceRequest*) resizeInstanceRequest;

    -(void)resizeInstanceAsyncWithRequest:(VmResizeInstanceRequest*) resizeInstanceRequest
    completionHandler:(void(^)(int statusCode,VmResizeInstanceResponse* _Nullable resizeInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    releaseImage sync request
    @param releaseImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `releaseImageResponse` the request response data model
    */
    -(NSDictionary*) releaseImageSyncWithRequest:(VmReleaseImageRequest*) releaseImageRequest;

    -(void)releaseImageAsyncWithRequest:(VmReleaseImageRequest*) releaseImageRequest
    completionHandler:(void(^)(int statusCode,VmReleaseImageResponse* _Nullable releaseImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteImage sync request
    @param deleteImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteImageResponse` the request response data model
    */
    -(NSDictionary*) deleteImageSyncWithRequest:(VmDeleteImageRequest*) deleteImageRequest;

    -(void)deleteImageAsyncWithRequest:(VmDeleteImageRequest*) deleteImageRequest
    completionHandler:(void(^)(int statusCode,VmDeleteImageResponse* _Nullable deleteImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceTypes sync request
    @param describeInstanceTypesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceTypesResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceTypesSyncWithRequest:(VmDescribeInstanceTypesRequest*) describeInstanceTypesRequest;

    -(void)describeInstanceTypesAsyncWithRequest:(VmDescribeInstanceTypesRequest*) describeInstanceTypesRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstanceTypesResponse* _Nullable describeInstanceTypesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteInstanceTemplate sync request
    @param deleteInstanceTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteInstanceTemplateResponse` the request response data model
    */
    -(NSDictionary*) deleteInstanceTemplateSyncWithRequest:(VmDeleteInstanceTemplateRequest*) deleteInstanceTemplateRequest;

    -(void)deleteInstanceTemplateAsyncWithRequest:(VmDeleteInstanceTemplateRequest*) deleteInstanceTemplateRequest
    completionHandler:(void(^)(int statusCode,VmDeleteInstanceTemplateResponse* _Nullable deleteInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    detachNetworkInterface sync request
    @param detachNetworkInterfaceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachNetworkInterfaceResponse` the request response data model
    */
    -(NSDictionary*) detachNetworkInterfaceSyncWithRequest:(VmDetachNetworkInterfaceRequest*) detachNetworkInterfaceRequest;

    -(void)detachNetworkInterfaceAsyncWithRequest:(VmDetachNetworkInterfaceRequest*) detachNetworkInterfaceRequest
    completionHandler:(void(^)(int statusCode,VmDetachNetworkInterfaceResponse* _Nullable detachNetworkInterfaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceTemplates sync request
    @param describeInstanceTemplatesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceTemplatesResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceTemplatesSyncWithRequest:(VmDescribeInstanceTemplatesRequest*) describeInstanceTemplatesRequest;

    -(void)describeInstanceTemplatesAsyncWithRequest:(VmDescribeInstanceTemplatesRequest*) describeInstanceTemplatesRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstanceTemplatesResponse* _Nullable describeInstanceTemplatesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstanceDiskAttribute sync request
    @param modifyInstanceDiskAttributeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceDiskAttributeResponse` the request response data model
    */
    -(NSDictionary*) modifyInstanceDiskAttributeSyncWithRequest:(VmModifyInstanceDiskAttributeRequest*) modifyInstanceDiskAttributeRequest;

    -(void)modifyInstanceDiskAttributeAsyncWithRequest:(VmModifyInstanceDiskAttributeRequest*) modifyInstanceDiskAttributeRequest
    completionHandler:(void(^)(int statusCode,VmModifyInstanceDiskAttributeResponse* _Nullable modifyInstanceDiskAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstancePrivateIpAddress sync request
    @param describeInstancePrivateIpAddressRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstancePrivateIpAddressResponse` the request response data model
    */
    -(NSDictionary*) describeInstancePrivateIpAddressSyncWithRequest:(VmDescribeInstancePrivateIpAddressRequest*) describeInstancePrivateIpAddressRequest;

    -(void)describeInstancePrivateIpAddressAsyncWithRequest:(VmDescribeInstancePrivateIpAddressRequest*) describeInstancePrivateIpAddressRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstancePrivateIpAddressResponse* _Nullable describeInstancePrivateIpAddressResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    imageTasks sync request
    @param imageTasksRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `imageTasksResponse` the request response data model
    */
    -(NSDictionary*) imageTasksSyncWithRequest:(VmImageTasksRequest*) imageTasksRequest;

    -(void)imageTasksAsyncWithRequest:(VmImageTasksRequest*) imageTasksRequest
    completionHandler:(void(^)(int statusCode,VmImageTasksResponse* _Nullable imageTasksResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceStatus sync request
    @param describeInstanceStatusRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceStatusResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceStatusSyncWithRequest:(VmDescribeInstanceStatusRequest*) describeInstanceStatusRequest;

    -(void)describeInstanceStatusAsyncWithRequest:(VmDescribeInstanceStatusRequest*) describeInstanceStatusRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstanceStatusResponse* _Nullable describeInstanceStatusResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteInstance sync request
    @param deleteInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteInstanceResponse` the request response data model
    */
    -(NSDictionary*) deleteInstanceSyncWithRequest:(VmDeleteInstanceRequest*) deleteInstanceRequest;

    -(void)deleteInstanceAsyncWithRequest:(VmDeleteInstanceRequest*) deleteInstanceRequest
    completionHandler:(void(^)(int statusCode,VmDeleteInstanceResponse* _Nullable deleteInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createKeypair sync request
    @param createKeypairRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createKeypairResponse` the request response data model
    */
    -(NSDictionary*) createKeypairSyncWithRequest:(VmCreateKeypairRequest*) createKeypairRequest;

    -(void)createKeypairAsyncWithRequest:(VmCreateKeypairRequest*) createKeypairRequest
    completionHandler:(void(^)(int statusCode,VmCreateKeypairResponse* _Nullable createKeypairResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstances sync request
    @param describeInstancesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstancesResponse` the request response data model
    */
    -(NSDictionary*) describeInstancesSyncWithRequest:(VmDescribeInstancesRequest*) describeInstancesRequest;

    -(void)describeInstancesAsyncWithRequest:(VmDescribeInstancesRequest*) describeInstancesRequest
    completionHandler:(void(^)(int statusCode,VmDescribeInstancesResponse* _Nullable describeInstancesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    verifyInstanceTemplate sync request
    @param verifyInstanceTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `verifyInstanceTemplateResponse` the request response data model
    */
    -(NSDictionary*) verifyInstanceTemplateSyncWithRequest:(VmVerifyInstanceTemplateRequest*) verifyInstanceTemplateRequest;

    -(void)verifyInstanceTemplateAsyncWithRequest:(VmVerifyInstanceTemplateRequest*) verifyInstanceTemplateRequest
    completionHandler:(void(^)(int statusCode,VmVerifyInstanceTemplateResponse* _Nullable verifyInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    vm common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) vmCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)vmCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* VmClient_h */
